#include<iostream>
#include<thread>
#include<queue>
#include<unistd.h>
#include"BlockQueue.hpp"
using namespace BlockQueueModule;


void consumer(BlockQueue<int>& bq)
{
    while(1)
    {
        sleep(2);

        int data;
        bq.Pop(&data);
        std::cout<<"消费者消费了一个数据:"<<data<<std::endl;
    }
}
void productor(BlockQueue<int>& bq)
{
    int data = 10;
    while(1)
    {
        bq.Equeue(data);
        std::cout<<"生产者生产了一个数据:"<<data<<std::endl;

        data++;
    }
}


int main()
{
    BlockQueue<int>* bq = new BlockQueue<int>();

    std::thread c(consumer, std::ref(*bq));
    std::thread p(productor, std::ref(*bq));


    c.join();
    p.join();

    return 0;
}